package modelosqlserver;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import javax.swing.ImageIcon;
import javax.swing.SwingUtilities;

import transacciones.ConeccionDAO;
import transacciones.TransactionDelegate;
import utilitario.FuncionesUsuario;

public class OrganizacionDAO extends ConeccionDAO {

	private Organizacion varOrg;
	private FuncionesUsuario funUsu;

	public OrganizacionDAO(Organizacion parOrg, TransactionDelegate transactionDelegate, FuncionesUsuario parFunUsu) {

		super(transactionDelegate);
		this.varOrg = parOrg;
		this.funUsu = parFunUsu;

	}// Fin de constructor

	public String agregar(Organizacion parOrg) {
		String conSql;
		String resCod = "";
		PreparedStatement pstm;
		ResultSet resSql;

		try {

			conSql = "insert into Organizacion values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";

			pstm = obtenerConeccion().prepareStatement(conSql, Statement.RETURN_GENERATED_KEYS);

			pstm.setString(1, parOrg.getOrg_cod());
			pstm.setDate(2, parOrg.getOrg_fecexp());
			pstm.setString(3, parOrg.getOrg_nombre());
			pstm.setString(4, parOrg.getOrg_estado());
			pstm.setInt(5, parOrg.getOrg_ver());

			if (pstm.executeUpdate() == 1) {

				resCod = parOrg.getOrg_cod();

			}// Fin de if(pstm.executeUpdate() == 1)

			return resCod;

		} catch (SQLException e) {
			// funUsu.mostrarMensaje("¡¡¡Error en metodo agregar()", this.getClass().getName());
			throw new RuntimeException(e);
		}
	}// Fin de Metodo Agregar ORCliente

	public Organizacion obtenerOrganizacion(String parOrgCod) {

		String conSql;
		PreparedStatement pstm;
		ResultSet resSql;

		try {

			conSql = "select * from Organizacion where org_cod='" + parOrgCod + "'";
			pstm = obtenerConeccion().prepareStatement(conSql);
			resSql = pstm.executeQuery();

			varOrg.limpiarInstancia();
			if (resSql.next()) {

				varOrg.setOrg_cod(resSql.getString("org_cod"));
				varOrg.setOrg_fecexp(resSql.getDate("org_fecexp"));
				varOrg.setOrg_nombre(resSql.getString("org_nombre"));
				varOrg.setOrg_estado(resSql.getString("org_estado"));
				varOrg.setOrg_ver(resSql.getInt("org_ver"));

			}
		} catch (SQLException e) {
			// funUsu.mostrarMensaje("¡¡¡Error en metodo agregar()", this.getClass().getName());
			throw new RuntimeException(e);
		}
		return varOrg;

	}

	public boolean existeOrganizacion(String parOrgMail, String parOrgClave) {

		String conSql;
		PreparedStatement pstm;
		ResultSet resSql;

		try {

			conSql = "select * from Organizacion where usu_mail = ? and usu_clave = ?";
			pstm = obtenerConeccion().prepareStatement(conSql);

			pstm.setString(1, parOrgMail);
			pstm.setString(2, parOrgClave);
			resSql = pstm.executeQuery();

			if (resSql.next()) {

				return true;

			}

			return false;

		} catch (SQLException e) {
			e.printStackTrace();
			throw new RuntimeException(e);
		}
	}// Fin de Metodo Buscar Nombre de ORPersonal


	public ImageIcon leerBlob(byte[] parResSql) {

		ImageIcon emp_logo;

		if (parResSql != null) {
			emp_logo = new ImageIcon(parResSql);
		} else {
			emp_logo = null;
		}
		return emp_logo;
	}

	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			@Override
			public void run() {
				String conSql;
				PreparedStatement pstm;

				// MigrarOrganizacion empMig;
				// OrganizacionDAO empDAO = new OrganizacionDAO(null, null);
				//
				// List<MigrarOrganizacion> lisEmp = empDAO.getListMigrarOrganizacion();
				// Iterator ite = lisEmp.iterator();
				//
				// while (ite.hasNext()) {
				//
				// empMig = (MigrarOrganizacion) ite.next();
				//
				// try {
				// Connection conexSQLServer = ConexionSqlServer.crearConexion();
				//
				// conSql = "insert into Organizacion values(?,?,?,?,?)";
				// pstm = conexSQLServer.prepareStatement(conSql);
				//
				// pstm.setString(1, empMig.getEmp_cod());//Codigo
				// pstm.setString(2, empMig.getEmp_ruc());
				// pstm.setString(3, empMig.getEmp_nombre());
				// pstm.setString(4, empMig.getEmp_descripcion());
				// pstm.setString(5, empMig.getEmp_contacto());
				//
				//
				// pstm.execute();
				//
				// conexSQLServer.close();
				//
				// } catch (SQLException e) {
				// throw new RuntimeException(e);
				// }
				//
				// System.out.println("Codigo : " + empMig.getEmp_cod());
				// }
			}
		});
	}
}